#ifndef __PTGUI_scene_H__
#define __PTGUI_scene_H__

#include <ptgui/ptgui.h>
#include <ptgui/list.h>
#include <ptgui/widgets/widget.h>
#include <ptgui/widgets/container.h>

/** Gets the type of a scene */
#define PTGUI_SCENE_TYPE	   (ptgui_scene_type_get())
/** Casts the object to an ptgui_scene */
#define PTGUI_SCENE(obj)  	 (PTGUI_OBJECT_CAST((obj), PTGUI_SCENE_TYPE, ptgui_scene_t))
/** Checks if the object is an ptgui_scene */
#define PTGUI_IS_SCENE(obj)    (PTGUI_OBJECT_CHECK_TYPE((obj), PTGUI_SCENE_TYPE))

struct ptgui_scene
{
	/* inherit from ptgui_object */
	struct ptgui_container	parent;

	/* transfer status */
	rt_uint16_t			trans_status;

	/* scene title */
	char				*title;

	/* View Handle */
	rt_uint16_t			view_handle;	

	/* reserved user data */
	ptgui_gui_t			gui;

	/* reserved user data */
	rt_uint32_t			user_data;
};

ptgui_type_t *ptgui_scene_type_get(void);

ptgui_scene_t *ptgui_scene_create(ptgui_type_t *scene_type);
void ptgui_scene_destroy(ptgui_scene_t *scene);

rt_bool_t ptgui_scene_event_handler(ptgui_widget_t *scene, struct ptgui_event *event);

#endif
